<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>Contribution guide | Luckysheet Document</title>
    <meta name="generator" content="VuePress 1.7.1">
    
    <meta name="description" content="Luckysheet is an online spreadsheet like excel that is powerful, simple to configure, and completely open source.This site contains official configuration document, API, and tutorial.">
    <meta property="article:modified_time" content="2020-12-17T08:23:07.000Z">
    <meta property="og:title" content="Contribution guide">
    <meta property="og:type" content="article">
    <meta property="og:url" content="https://mengshukeji.github.io/LuckysheetDemo/guide/contribute.html">
    <meta name="twitter:title" content="Contribution guide">
    <meta name="twitter:url" content="https://mengshukeji.github.io/LuckysheetDemo/guide/contribute.html">
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:label1" content="Written by">
    
    <link rel="preload" href="/LuckysheetDocs/assets/css/0.styles.48756c9a.css" as="style"><link rel="preload" href="/LuckysheetDocs/assets/js/app.fd749708.js" as="script"><link rel="preload" href="/LuckysheetDocs/assets/js/2.08ae9631.js" as="script"><link rel="preload" href="/LuckysheetDocs/assets/js/16.3ab9af64.js" as="script"><link rel="prefetch" href="/LuckysheetDocs/assets/js/10.5aa5c910.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/11.b5f38301.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/12.ba6e3444.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/13.facb0d4d.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/14.5329ef33.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/15.b16af5b8.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/17.89342c1c.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/18.4117a1ba.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/19.b7bced65.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/20.085877c0.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/21.7942a443.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/22.71c06ffc.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/23.7e0bb3f7.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/24.b3632420.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/25.af0769a6.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/26.003d03b5.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/27.d66536ec.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/28.4c5a65e7.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/29.cde76ea7.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/3.5220f451.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/30.431c8d21.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/31.b1bc10b5.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/32.0303e169.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/33.2fdafa57.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/4.17e14ac8.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/5.d496610c.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/6.edd4669e.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/7.9a67dd07.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/8.4431336c.js"><link rel="prefetch" href="/LuckysheetDocs/assets/js/9.d6068f70.js">
    <link rel="stylesheet" href="/LuckysheetDocs/assets/css/0.styles.48756c9a.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/LuckysheetDocs/" class="home-link router-link-active"><img src="/LuckysheetDocs/img/logo.png" alt="Luckysheet Document" class="logo"> <span class="site-name can-hide">Luckysheet Document</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/LuckysheetDocs/" class="nav-link">
  Home
</a></div><div class="nav-item"><a href="/LuckysheetDocs/guide/" class="nav-link router-link-active">
  Guide
</a></div><div class="nav-item"><a href="https://mengshukeji.github.io/LuckysheetDemo/" target="_blank" rel="noopener noreferrer" class="nav-link external">
  Demo
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="More" class="dropdown-title"><span class="title">More</span> <span class="arrow down"></span></button> <button type="button" aria-label="More" class="mobile-dropdown-title"><span class="title">More</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/LuckysheetDocs/about/" class="nav-link">
  About
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Select language" class="dropdown-title"><span class="title">Languages</span> <span class="arrow down"></span></button> <button type="button" aria-label="Select language" class="mobile-dropdown-title"><span class="title">Languages</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/LuckysheetDocs/guide/contribute.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">
  English
</a></li><li class="dropdown-item"><!----> <a href="/LuckysheetDocs/zh/guide/contribute.html" class="nav-link">
  简体中文
</a></li></ul></div></div> <a href="https://github.com/mengshukeji/Luckysheet" target="_blank" rel="noopener noreferrer" class="repo-link">
    GitHub
    <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/LuckysheetDocs/" class="nav-link">
  Home
</a></div><div class="nav-item"><a href="/LuckysheetDocs/guide/" class="nav-link router-link-active">
  Guide
</a></div><div class="nav-item"><a href="https://mengshukeji.github.io/LuckysheetDemo/" target="_blank" rel="noopener noreferrer" class="nav-link external">
  Demo
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="More" class="dropdown-title"><span class="title">More</span> <span class="arrow down"></span></button> <button type="button" aria-label="More" class="mobile-dropdown-title"><span class="title">More</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/LuckysheetDocs/about/" class="nav-link">
  About
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Select language" class="dropdown-title"><span class="title">Languages</span> <span class="arrow down"></span></button> <button type="button" aria-label="Select language" class="mobile-dropdown-title"><span class="title">Languages</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/LuckysheetDocs/guide/contribute.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">
  English
</a></li><li class="dropdown-item"><!----> <a href="/LuckysheetDocs/zh/guide/contribute.html" class="nav-link">
  简体中文
</a></li></ul></div></div> <a href="https://github.com/mengshukeji/Luckysheet" target="_blank" rel="noopener noreferrer" class="repo-link">
    GitHub
    <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav>  <ul class="sidebar-links"><li><a href="/LuckysheetDocs/guide/" aria-current="page" class="sidebar-link">Get started</a></li><li><a href="/LuckysheetDocs/guide/config.html" class="sidebar-link">Overall configuration</a></li><li><a href="/LuckysheetDocs/guide/sheet.html" class="sidebar-link">Sheet Configuration</a></li><li><a href="/LuckysheetDocs/guide/cell.html" class="sidebar-link">Format attributes</a></li><li><a href="/LuckysheetDocs/guide/operate.html" class="sidebar-link">Table Operation</a></li><li><a href="/LuckysheetDocs/guide/api.html" class="sidebar-link">API</a></li><li><a href="/LuckysheetDocs/guide/resource.html" class="sidebar-link">Tutorials and resources</a></li><li><a href="/LuckysheetDocs/guide/FAQ.html" class="sidebar-link">FAQ</a></li><li><a href="/LuckysheetDocs/guide/contribute.html" aria-current="page" class="active sidebar-link">Contribution guide</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/LuckysheetDocs/guide/contribute.html#our-code-of-conduct" class="sidebar-link">Our code of conduct</a></li><li class="sidebar-sub-header"><a href="/LuckysheetDocs/guide/contribute.html#how-to-participate-in-contributing" class="sidebar-link">How to participate in contributing?</a></li><li class="sidebar-sub-header"><a href="/LuckysheetDocs/guide/contribute.html#how-to-submit-issues" class="sidebar-link">How to submit issues</a></li><li class="sidebar-sub-header"><a href="/LuckysheetDocs/guide/contribute.html#how-to-claim-issues" class="sidebar-link">How to claim Issues</a></li><li class="sidebar-sub-header"><a href="/LuckysheetDocs/guide/contribute.html#how-to-submit-code" class="sidebar-link">How to submit code</a></li><li class="sidebar-sub-header"><a href="/LuckysheetDocs/guide/contribute.html#code-specification" class="sidebar-link">Code Specification</a></li><li class="sidebar-sub-header"><a href="/LuckysheetDocs/guide/contribute.html#how-to-contribute-documents" class="sidebar-link">How to contribute documents</a></li><li class="sidebar-sub-header"><a href="/LuckysheetDocs/guide/contribute.html#how-to-become-luckysheet-committer" class="sidebar-link">How to become Luckysheet Committer</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="contribution-guide"><a href="#contribution-guide" class="header-anchor">#</a> Contribution guide</h1> <p>welcome! We are very happy that you are here and look forward to your interest in participating in Luckysheet contributions. Of course, before you participate in the Luckysheet contribution, please make sure to read the following full text:</p> <h2 id="our-code-of-conduct"><a href="#our-code-of-conduct" class="header-anchor">#</a> Our code of conduct</h2> <ol><li><p>We promise to respect all those who participated in the contribution, not limited to those who raised questions, contributed documents and code, resolved bugs and other contributions;</p></li> <li><p>We are obliged to abide by local laws and regulations, and we reject all behaviors with legal risks;</p></li> <li><p>We oppose any participant's derogatory comments, personal attacks, harassment or insult to others, and other non-professional behaviors;</p></li> <li><p>We have the right and responsibility to delete or edit content that does not comply with this code of conduct, not limited to code, issues, wikis, documents and others. Participants who do not comply with the code of conduct may be removed from the team;</p></li> <li><p>We accept the supervision of anyone, and anyone can report to us the facts that are found to be inconsistent with this code of conduct through problem feedback.</p></li></ol> <h2 id="how-to-participate-in-contributing"><a href="#how-to-participate-in-contributing" class="header-anchor">#</a> How to participate in contributing?</h2> <ul><li>Contributed documents: Browsing the document can deepen your understanding of Luckysheet. Once you find that the document is not clearly written or the logic is confusing, you can correct, modify, and supplement. You can go to <a href="https://groups.google.com/g/luckysheet" target="_blank" rel="noopener noreferrer">Google Forum<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> to give feedback</li> <li>Contributing code: Welcome everyone to contribute code to the Luckysheet community, you are welcome to claim the Open state <a href="https://github.com/mengshukeji/Luckysheet/issues" target="_blank" rel="noopener noreferrer">Issues<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> and unfinished features, submit a PR, and become one of the contributors If you find that some functions cannot meet your needs or have problems during use, please record in Issues</li> <li>Participate in the issue discussion: you can post your suggestions under any <a href="https://github.com/mengshukeji/Luckysheet/issues" target="_blank" rel="noopener noreferrer">Issues<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li>Review code: You can see PR submitted by all contributors on <a href="https://github.com/mengshukeji/Luckysheet" target="_blank" rel="noopener noreferrer">Github<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>, you can review their code and post your suggestions</li></ul> <h2 id="how-to-submit-issues"><a href="#how-to-submit-issues" class="header-anchor">#</a> How to submit issues</h2> <p>Before you submit features/improvements, you should pay attention to the following points:</p> <ul><li>Please confirm whether the feature/improvement has been submitted by others</li> <li>An easy-to-understand title to explain the bug/submission feature/improvement you submitted</li> <li>If it is a bug, describe the cause of the bug in detail. If it can be reproduced, please try to provide complete reproduction steps</li> <li>If it is a feature, then the feature should have wide applicability, suitable for most users, and it is best to provide detailed design documents</li> <li>If it is an improvement, describe the benefits of this improvement as clearly as possible</li></ul> <p>Specific steps:</p> <ul><li>Create <a href="https://github.com/mengshukeji/Luckysheet/issues" target="_blank" rel="noopener noreferrer">Issues<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> and describe the issue clearly</li> <li>If you want to solve the issue, assign the issue to your own name. If you just submit a bug/feature/improvement and don’t have time to contribute code, set assignne to empty</li> <li>If it is a relatively large feature/improvement, try to output the design document first and follow the <a href="https://github.com/mengshukeji/Luckysheet-rfcs" target="_blank" rel="noopener noreferrer">Luckysheet RFC<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> process for others to review</li> <li>After coding, submit the code</li></ul> <h2 id="how-to-claim-issues"><a href="#how-to-claim-issues" class="header-anchor">#</a> How to claim Issues</h2> <p>In Luckysheet's <a href="https://github.com/mengshukeji/Luckysheet/issues" target="_blank" rel="noopener noreferrer">Issues<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> list, there are many issues created by others that have not been repaired. If you are interested, you can claim these issues. The steps to claim are as follows:</p> <ul><li>Leave a message under the issue, express the idea of claiming the task, and specify <strong>@I can solve it</strong></li> <li>If the submitter has no comments, assign the issue to your own name and update the progress in time</li> <li>If it is a relatively large feature, try to output the design document first and follow the <a href="https://github.com/mengshukeji/Luckysheet-rfcs" target="_blank" rel="noopener noreferrer">Luckysheet RFC<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> process for others to review</li> <li>Develop the code and submit the code to github</li></ul> <h2 id="how-to-submit-code"><a href="#how-to-submit-code" class="header-anchor">#</a> How to submit code</h2> <ol><li>Fork to own warehouse</li></ol> <p>Go to the Github page of <a href="https://github.com/mengshukeji/Luckysheet" target="_blank" rel="noopener noreferrer">Luckysheet<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>, and click the Fork button in the upper right corner to proceed.</p> <ol start="2"><li>Git clone to local</li></ol> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">git</span> clone https://github.com/<span class="token operator">&lt;</span>your_github_name<span class="token operator">&gt;</span>/Luckysheet.git
</code></pre></div><ol start="3"><li>Establish a connection upstream</li></ol> <div class="language-shell extra-class"><pre class="language-shell"><code>
<span class="token builtin class-name">cd</span> Luckysheet
gitremote <span class="token function">add</span> upstream https://github.com/mengshukeji/Luckysheet.git
</code></pre></div><ol start="4"><li>Create a development branch</li></ol> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">git</span> checkout -b dev
</code></pre></div><ol start="5"><li>Modify the submission code</li></ol> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">git</span> add.
<span class="token function">npm</span> run commit
<span class="token function">git</span> push origin dev
</code></pre></div><ol start="6"><li>Sync code, synchronize the latest code to the local</li></ol> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">git</span> fetch upstream
<span class="token function">git</span> rebase upstream/master
</code></pre></div><ol start="7"><li>If there is a conflict (nothing can be ignored)</li></ol> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">git</span> status <span class="token comment"># View conflict files and modify conflicts</span>
<span class="token function">git</span> add.
<span class="token function">git</span> rebase --continue
</code></pre></div><p>When submitting the git rebase --continue command, if vim prompts to edit the commit information, you can add your changes, then save and exit</p> <blockquote><p>For vim commands, please refer to the <a href="https://www.runoob.com/linux/linux-vim.html" target="_blank" rel="noopener noreferrer">vim<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p></blockquote> <ol start="8"><li>Submit branch code</li></ol> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">git</span> push origin dev
</code></pre></div><p>If you are prompted to pull first, you can pull it before submitting</p> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">git</span> pull origin dev
<span class="token function">git</span> push origin dev
</code></pre></div><p>If the vim prompt to edit the commit information pops up, you can exit directly through the vim command</p> <blockquote><p>For vim commands, please refer to <a href="https://www.runoob.com/linux/linux-vim.html" target="_blank" rel="noopener noreferrer">vim<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p></blockquote> <ol start="9"><li>Submit pr
Go to the fork project in your github warehouse, switch to the branch you just created and modified, click new pull request, and add the corresponding description, and finally click Create pull request to submit</li></ol> <h2 id="code-specification"><a href="#code-specification" class="header-anchor">#</a> Code Specification</h2> <blockquote><p>General code specification example</p></blockquote> <ul><li>Keep the block depth to a minimum. Avoid nested If conditions as much as possible</li></ul> <div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// CORRECT</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>comparison<span class="token punctuation">)</span> <span class="token keyword">return</span>

<span class="token keyword">if</span> <span class="token punctuation">(</span>variable<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">const</span> item <span class="token keyword">of</span> items<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>variable2<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token comment">// Do something here</span>
<span class="token punctuation">}</span>

<span class="token comment">// INCORRECT</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>comparison<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token keyword">if</span> <span class="token punctuation">(</span>variable<span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">const</span> item <span class="token keyword">in</span> items<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
  <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>variable2<span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token comment">// Do something here</span>
  <span class="token punctuation">}</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
  <span class="token keyword">return</span>
<span class="token punctuation">}</span>
</code></pre></div><ul><li>Do not use operands for chain comparison</li></ul> <div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// CORRECT</span>

<span class="token keyword">if</span> <span class="token punctuation">(</span>cb<span class="token punctuation">)</span> <span class="token function">cb</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>cb <span class="token operator">||</span> <span class="token punctuation">(</span>cb <span class="token operator">===</span> fn<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token function">cb</span><span class="token punctuation">(</span><span class="token punctuation">)</span>

<span class="token comment">// INCORRECT</span>

cb <span class="token operator">&amp;&amp;</span> <span class="token function">cb</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">(</span><span class="token operator">!</span>cb <span class="token operator">||</span> <span class="token punctuation">(</span>cb <span class="token operator">===</span> fn<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">&amp;&amp;</span> <span class="token function">cb</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre></div><ul><li>All variables should be declared at the beginning of the block in alphabetical order</li></ul> <div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// CORRECT</span>
<span class="token keyword">function</span> <span class="token function">foo</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token keyword">const</span> foo <span class="token operator">=</span><span class="token string">'bar'</span>
  <span class="token keyword">const</span> bar <span class="token operator">=</span><span class="token string">'foo'</span>

        <span class="token keyword">if</span> <span class="token punctuation">(</span>conditional<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>

  <span class="token operator">...</span>

  <span class="token keyword">return</span> foo
<span class="token punctuation">}</span>

<span class="token comment">// INCORRECT</span>

<span class="token keyword">function</span> <span class="token function">foo</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token keyword">const</span> foo <span class="token operator">=</span><span class="token string">'bar'</span>

        <span class="token keyword">if</span> <span class="token punctuation">(</span>conditional<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>

  <span class="token keyword">const</span> bar <span class="token operator">=</span><span class="token string">'foo'</span>

  <span class="token operator">...</span>

  <span class="token keyword">return</span> foo
<span class="token punctuation">}</span>
</code></pre></div><ul><li>Return as soon as possible</li></ul> <div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// CORRECT</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>condition<span class="token punctuation">)</span> <span class="token keyword">return</span><span class="token string">'foo'</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>condition2<span class="token punctuation">)</span> <span class="token keyword">return</span><span class="token string">'bar'</span>
<span class="token comment">// Return must have a blank line above</span>
<span class="token keyword">return</span><span class="token string">'fizz'</span>

<span class="token comment">// INCORRECT</span>
<span class="token keyword">const</span> variable <span class="token operator">=</span><span class="token string">''</span>

<span class="token keyword">if</span> <span class="token punctuation">(</span>condition<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  variable <span class="token operator">=</span><span class="token string">'foo'</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>condition2<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  variable <span class="token operator">=</span><span class="token string">'bar'</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
  variable <span class="token operator">=</span><span class="token string">'fizz'</span>
<span class="token punctuation">}</span>

<span class="token keyword">return</span> variable
</code></pre></div><h2 id="how-to-contribute-documents"><a href="#how-to-contribute-documents" class="header-anchor">#</a> How to contribute documents</h2> <h2 id="how-to-become-luckysheet-committer"><a href="#how-to-become-luckysheet-committer" class="header-anchor">#</a> How to become Luckysheet Committer</h2> <p>As long as anyone contributes to the Luckysheet project, you are the officially recognized Contributor of the Luckysheet project. There is no exact standard for growing from Contributor to Committer, and there is no expected timetable, but Committer candidates are generally A long-term active contributor, becoming Committer does not require a huge architectural improvement contribution, or how many lines of code contributions, contributing code, contributing documents, participating in mailing list discussions, helping to answer questions, etc., are all ways to increase their influence .</p> <p>List of potential contributions (in no particular order):</p> <ul><li>Submit the bugs, features, and improvements you found to the issue</li> <li>Update the official documents so that the project documents are the most recent, the best practices for writing Luckysheet, and various useful documents for the users</li> <li>Perform test and report test results, performance test and other MQ performance comparison test, etc.</li> <li>Review the work of others (including code and non-code) and publish your own suggestions</li> <li>Guide new contributors and be familiar with the community process</li> <li>Post a blog about Luckysheet</li> <li>Any contribution to the development of the Luckysheet community</li> <li>......</li></ul></div> <footer class="page-edit"><div class="edit-link"><a href="https://github.com/mengshukeji/Luckysheet/edit/master/docs/guide/contribute.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <div class="last-updated"><span class="prefix">Last Updated:</span> <span class="time">12/17/2020, 8:23:07 AM</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev">
      ←
      <a href="/LuckysheetDocs/guide/FAQ.html" class="prev">
        FAQ
      </a></span> <!----></p></div> </main></div><div class="global-ui"></div></div>
    <script src="/LuckysheetDocs/assets/js/app.fd749708.js" defer></script><script src="/LuckysheetDocs/assets/js/2.08ae9631.js" defer></script><script src="/LuckysheetDocs/assets/js/16.3ab9af64.js" defer></script>
  </body>
</html>
